// 物流仓储数据刷新功能
(function () {
  // 中国省份物流数据
  const provinceData = [
    { province: "广东省", 发货: 191, 收货: 95, 快递: 96 },
    { province: "浙江省", 发货: 178, 收货: 88, 快递: 90 },
    { province: "福建省", 发货: 172, 收货: 85, 快递: 87 },
    { province: "江苏省", 发货: 155, 收货: 75, 快递: 80 },
    { province: "上海市", 发货: 138, 收货: 68, 快递: 70 },
    { province: "北京市", 发货: 125, 收货: 60, 快递: 65 },
    { province: "山东省", 发货: 115, 收货: 55, 快递: 60 },
    { province: "四川省", 发货: 100, 收货: 48, 快递: 52 },
    { province: "河南省", 发货: 89, 收货: 42, 快递: 47 },
    { province: "湖北省", 发货: 81, 收货: 38, 快递: 43 },
    { province: "湖南省", 发货: 75, 收货: 35, 快递: 40 },
    { province: "河北省", 发货: 69, 收货: 32, 快递: 37 },
    { province: "安徽省", 发货: 61, 收货: 28, 快递: 33 },
    { province: "辽宁省", 发货: 55, 收货: 25, 快递: 30 },
    { province: "陕西省", 发货: 49, 收货: 22, 快递: 27 },
    { province: "江西省", 发货: 44, 收货: 20, 快递: 24 },
    { province: "重庆市", 发货: 40, 收货: 18, 快递: 22 },
    { province: "广西壮族自治区", 发货: 35, 收货: 15, 快递: 20 },
    { province: "云南省", 发货: 29, 收货: 12, 快递: 17 },
    { province: "贵州省", 发货: 24, 收货: 10, 快递: 14 },
    { province: "山西省", 发货: 20, 收货: 8, 快递: 12 },
    { province: "吉林省", 发货: 16, 收货: 6, 快递: 10 },
    { province: "黑龙江省", 发货: 13, 收货: 5, 快递: 8 },
    { province: "内蒙古自治区", 发货: 11, 收货: 4, 快递: 7 },
    { province: "新疆维吾尔自治区", 发货: 8, 收货: 3, 快递: 5 },
    { province: "甘肃省", 发货: 6, 收货: 2, 快递: 4 },
    { province: "宁夏回族自治区", 发货: 5, 收货: 2, 快递: 3 },
    { province: "青海省", 发货: 4, 收货: 2, 快递: 2 },
    { province: "西藏自治区", 发货: 4, 收货: 2, 快递: 2 },
    { province: "海南省", 发货: 4, 收货: 2, 快递: 2 },
  ];

  // 基础数据
  let baseData = {
    delivery: 3287, // 发货
    receive: 3546, // 收货
    express: 2142, // 快递
  };

  // 列表滚动索引
  let currentIndex = 0;

  // 随机增量函数
  function getRandomIncrement(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
  }

  // 数字格式化函数（添加千位分隔符）
  function formatNumber(num) {
    return num.toLocaleString();
  }

  // 更新顶部数据显示函数
  function updateTopDataDisplay() {
    // 发货增加3~5个
    baseData.delivery += getRandomIncrement(3, 5);

    // 收货增加2~4个
    baseData.receive += getRandomIncrement(2, 4);

    // 快递增加-2~2个
    baseData.express += getRandomIncrement(-2, 2);

    // 确保快递数量不会变成负数
    if (baseData.express < 0) {
      baseData.express = 0;
    }

    // 更新页面显示 - 修正选择器
    const deliveryElement = document.querySelector(
      ".info-card-item1:first-child .info-card-num1-text"
    );
    const receiveElement = document.querySelector(
      ".info-card-item1:nth-child(2) .info-card-num1-text"
    );
    const expressElement = document.querySelector(
      ".info-card-item1:nth-child(3) .info-card-num1-text"
    );

    if (deliveryElement) {
      deliveryElement.textContent = formatNumber(baseData.delivery);
    }
    if (receiveElement) {
      receiveElement.textContent = formatNumber(baseData.receive);
    }
    if (expressElement) {
      expressElement.textContent = formatNumber(baseData.express);
    }

    // 在控制台输出当前数据（可选，用于调试）
    console.log("顶部数据更新:", {
      发货: formatNumber(baseData.delivery),
      收货: formatNumber(baseData.receive),
      快递: formatNumber(baseData.express),
    });
  }

  // 初始化省份列表显示
  function updateProvinceList() {
    const container = document.querySelector(".rank-list");
    const listHeader = container.querySelector(".list-header");

    // 清空现有内容，保留表头
    container.innerHTML = "";
    container.appendChild(listHeader);

    // 显示当前5条数据
    for (let i = 0; i < 5; i++) {
      const dataIndex = (currentIndex + i) % provinceData.length;
      const item = provinceData[dataIndex];

      // 为每个省份数据添加随机波动
      const delivery = item.发货;
      const receive = item.收货;
      const express = item.快递;

      const rankItem = document.createElement("div");
      rankItem.className = "rank-item";
      rankItem.innerHTML = `
                <div class="rank-item-td">${item.province}</div>
                <div class="rank-item-td">${formatNumber(delivery)}</div>
                <div class="rank-item-td">${formatNumber(receive)}</div>
                <div class="rank-item-td">${formatNumber(express)}</div>
            `;
      container.appendChild(rankItem);
    }
  }

  // 省份列表滚动动画 - 使用现有CSS样式，淡入淡出同时进行
  function scrollProvinceList() {
    const container = document.querySelector(".rank-list");
    const items = container.querySelectorAll(".rank-item");
    const firstItem = items[0];

    if (!firstItem) return;

    // 更新索引
    currentIndex = (currentIndex + 1) % provinceData.length;

    // 计算新插入的数据索引
    const newDataIndex = (currentIndex + 4) % provinceData.length;
    const newItem = provinceData[newDataIndex];

    // 为新数据添加随机波动
    const delivery = newItem.delivery;
    const receive = newItem.receive;
    const express = newItem.express;

    // 创建新的列表项，初始状态为从下方滑入
    const newRankItem = document.createElement("div");
    newRankItem.className = "rank-item slide-in-down";
    newRankItem.innerHTML = `
                <div class="rank-item-td">${newItem.province}</div>
                <div class="rank-item-td">${formatNumber(delivery)}</div>
                <div class="rank-item-td">${formatNumber(receive)}</div>
                <div class="rank-item-td">${formatNumber(express)}</div>
            `;

    // 添加到容器底部
    container.appendChild(newRankItem);

    // 同时开始两个动画：
    // 1. 第一个元素向上滑出并淡出
    firstItem.classList.add("slide-out-up");

    // 2. 新元素从底部滑入并淡入
    setTimeout(() => {
      newRankItem.classList.remove("slide-in-down");
      newRankItem.classList.add("slide-in-complete");
    }, 50);

    // 等待动画完成后移除第一个元素
    setTimeout(() => {
      firstItem.remove();
    }, 300); // 与CSS动画时间匹配
  }

  // 初始化数据显示
  function initializeData() {
    // 确保DOM已加载完成
    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", function () {
        updateTopDataDisplay();
        updateProvinceList();
      });
    } else {
      updateTopDataDisplay();
      updateProvinceList();
    }
  }

  // 启动数据刷新
  function startDataRefresh() {
    // 立即显示初始数据
    initializeData();

    // 每3秒刷新顶部数据
    setInterval(updateTopDataDisplay, 3000);

    // 每3秒滚动省份列表（如果数据足够）
    setInterval(() => {
      if (provinceData.length > 5) {
        scrollProvinceList();
      }
    }, 3000);

    console.log("物流仓储数据刷新已启动，每3秒更新一次");
  }

  // 当页面加载完成后启动数据刷新
  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", startDataRefresh);
  } else {
    startDataRefresh();
  }
})();
